/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"9FD75B86-4BE2-4822-B1B2-D955ABE99F75",variableType:4}
 */
var fCuenta_id = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"A625AF89-71C9-4CFF-860D-0A809BF122D3",variableType:4}
 */
var es_preview = 0;

/**
 *
 * @properties={typeid:24,uuid:"89D36A7C-F970-40E4-8850-413C50B955DB"}
 */
function agregar_renglon()
{ //  dar alta de un renglon en rec_detalle
	if (concepto==null || concepto==' ')
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto primero','OK')
	}   
	else
	{
		rec_cabecera_to_rec_detalle.newRecord(false);
		rec_cabecera_to_rec_detalle.cuentas_cyb = globals.zparam_caja_default;
		rec_cabecera_to_rec_detalle.moneda_id	= 1;
	}
}

/**
 *
 * @properties={typeid:24,uuid:"1F45CFED-63B0-4062-B267-07AFC8267088"}
 */
function cancelar() 
{
//	var vector=databaseManager.getEditedRecords()   // 19/03/2012
	databaseManager.revertEditedRecords()
	// databaseManager.setAutoSave(true)  // 29/10/2010
	Iniciar();
}

/**
 *
 * @properties={typeid:24,uuid:"5AA60D6E-9EBC-4772-8CC0-33B05B4F8ED9"}
 * @AllowToRunInFind
 */
function confirmar() 
{  //  este form esta basado en rec_1,2,3,4 y rec21

 if (globals.zparam_usa_proyecto == 1 && proyecto_id == null)
 {
	 globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar proyecto','OK')
	 return false
 }
 totalizar()
 // no pueden ser todos cero
 if (globals.gtotal_valores == 0 && globals.gtotal_varios == 0) 
 {
	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Valores o Anticipos o Imputación Contable" ,'OK')
	return false
 }
 else
 {	 
	 // controlar: puede haber anticipos 
	 if (Math.abs(globals.gtotal_valores - globals.gtotal_varios) > 0.005)
	 {
		 globals.DIALOGS.showWarningDialog('Aviso',"No coincide la suma los importes ingresados en valores e imputación contable",'OK')
		 return false
	 }
	 else
	 { 
			 var estado_val = validar_al_confirmar();// 08/10/2010
			 if (estado_val == false) // 08/10/2010
				 return false;
				 
			//// buscar numeracion de ingresos varios   codigo=52
			var fs_nro_rec = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'numeracion_pr')
			fs_nro_rec.find()
			fs_nro_rec.sucursal=sucursal
			fs_nro_rec.letra=letra
			fs_nro_rec.cod_comprobante=52   //fijo 52=ingresos varios
			var found=fs_nro_rec.search()
			if (found != 1)
		     {	
			    globals.DIALOGS.showWarningDialog('Aviso','Sucursal o Letra o Tipo de comprobante incorrectos al buscar numeración de ingresos varios','OK')
			   return false;
		     }
		     else
			 {
				  fs_nro_rec.setSelectedIndex(1)
			//==================== 07/10/2010  desde validar que no existe en rec_cabecera
				var nro_aux=fs_nro_rec.ultimo_numero + 1
				codigo_movimiento = 2
				globals.duplicacion_rec_cabecera(letra,sucursal,nro_aux,codigo_movimiento)  
				if (globals.gfilas != 0)
				{  // ya existe ese ingreso
					globals.DIALOGS.showWarningDialog('Aviso','Ya existe Ingreso Varios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000') + ' Verifique numerador de recibos','OK')		  
					return false; 
				}
				else
				{  // no existe ese ingreso, asigna el sig. numero
				  fs_nro_rec.ultimo_numero = fs_nro_rec.ultimo_numero + 1
			 	}
			 //==================== 07/10/2010  hasta validar que no existe en rec_cabecera				
			      
				 ////guardar mas datos de rec-cabecera  // es la tabla del form
			      nro_comprobante=fs_nro_rec.ultimo_numero
			      importe=globals.gtotal_valores 
			      importe_en_letras=globals.nro_a_letra(importe);
			      codigo_movimiento=2  // ingresos varios  // 11/08/2010
			            
			     	
				//// 19/05/2010 buscar en saldos_caja la cuenta de caja para sumarle cada renglon 
				var	tot_cheques=0
				var tot_efectivo=0
				//// hasta 19/05/2010////////////////////////////////////////////////
				
				//// grabar cyb  por cada detalle
				
				//var found=rec_cabecera_to_rec_detalle.getSize() // para ver cuantos hay quitar luego de probar
				for (var i = 1 ; i <= rec_cabecera_to_rec_detalle.getSize(); i++)
				{
				    //// grabar cheques:solo si es un cheque. grabar primero cheque porque para cyb necesita el cheque_id
					rec_cabecera_to_rec_detalle.setSelectedIndex(i)
					if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_cheque==1)	
					{
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.newRecord()
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.banco_id				= rec_cabecera_to_rec_detalle.banco_id
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.banco_sucursal		= rec_cabecera_to_rec_detalle.banco_sucursal
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.boleta_dep			= null
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.cheque_nro			= rec_cabecera_to_rec_detalle.cheque_nro
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.cuentas_cyb_id		= globals.zparam_caja_default
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.estado				= globals.zconf_chq_en_caja
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.fecha_emision		= rec_cabecera_to_rec_detalle.fecha_emision_chq
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.fecha_entrega		= null
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.fecha_pago			= rec_cabecera_to_rec_detalle.fecha_pago
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.importe				= rec_cabecera_to_rec_detalle.importe
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.lugar_emision		= rec_cabecera_to_rec_detalle.lugar_emision
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.marca_acredit		= 0
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.marcado_cheque		= 0
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.moneda_id			= rec_cabecera_to_rec_detalle.moneda_id
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.titular				= rec_cabecera_to_rec_detalle.titular
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.titular_cuit			= rec_cabecera_to_rec_detalle.titular_cuit
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.titular_direccion 	= rec_cabecera_to_rec_detalle.titular_direccion
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.valor_id				= rec_cabecera_to_rec_detalle.valor_id
						rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.concepto				= "Ingresos Varios: " + sucursal + ' - ' + nro_comprobante + ' - ' + concepto  //  13/10/2010  ver si va esto
					}
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.newRecord()
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cheque_id=rec_cabecera_to_rec_detalle.rec_detalle_to_cheques.cheque_id
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cod_movim=1      //1=Ingreso 2=Egreso ver tabla cod_movim_cyb
					
					//si es transferencia el movim_cyb debe tener la cuenta del banco en el cual se hizo la transf. 
					if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.usa_cta_bco==1) 
					{ // es transferencia   va al banco ingresado en el renglon
						rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cuentas_cyb_id=rec_cabecera_to_rec_detalle.cuentas_cyb
						rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.fecha_movim=rec_cabecera_to_rec_detalle.fecha_pago     // 02/08/2010 ingresada en el renglon
					}
					else // es cheque o efectivo   va a caja
					{	
						rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.cuentas_cyb_id = fCuenta_id   //13/04/2014 poner cuenta caja elegida con valuelist
						rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.fecha_movim = fecha       // cabecera
				    } 
					
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.empresa_id=null   // 11/08/2010
					//rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.fecha_movim=fecha       // cabecera  corrida dentro del if anterior
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.importe=rec_cabecera_to_rec_detalle.importe
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.imputacion_id=globals.zconf_cyb_imputacion_ingresos_varios //  11/08/2010
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.valor_id=rec_cabecera_to_rec_detalle.valor_id
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.moneda_id=rec_cabecera_to_rec_detalle.moneda_id 
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.concepto="Ingresos Varios: " + sucursal + ' - ' + nro_comprobante + ' - ' + concepto  //  11/08/2010  ver si va esto
					if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_cheque==1 ||  
						rec_cabecera_to_rec_detalle.rec_detalle_to_valores.usa_cta_bco==1)  
							rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.referencia=rec_cabecera_to_rec_detalle.cheque_nro;
						
					/////16/09/2010  se agrega para relacion con el numero de apertura de la caja
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.apertura_id=rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.movim_cyb_to_cuentas_cyb.apertura_id;
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.marca_conciliacion=0; //17/11/2010
					rec_cabecera_to_rec_detalle.rec_detalle_to_movim_cyb.proyecto_id = proyecto_id
					
					// acumula efectivo y cheques de terceros en caja, por separado para luego sumar al saldo de caja
					if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.usa_cta_bco!=1)  // 1=transferencia !=1 es efect. o cheque
					{
						if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_cheque==1)// es cheque
						{
							if (rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_propio!=1) // es terceros
								tot_cheques += rec_cabecera_to_rec_detalle.importe
						}
						else // es efectivo
						tot_efectivo += rec_cabecera_to_rec_detalle.importe
				    }     
				} // fin del for	
				
			    
				//suma a tabla saldos_caja el efectivo a saldo_efectivo y todos los cheques a saldo_valores //
			    /** @type {JSFoundSet<db:/infocom/saldos_caja>}*/
				var fs_saldos=databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'saldos_caja')
				var estado=fs_saldos.find()
				if (estado==true)
				{
					fs_saldos.cuentas_cyb_id 	= fCuenta_id
					fs_saldos.moneda_id 		= globals.zparam_moneda_default
					found = fs_saldos.search()
					if (found==1)  
					{ // actualiza saldos 
						fs_saldos.setSelectedIndex(1)
				    	fs_saldos.saldo_efectivo	+= tot_efectivo
				    	fs_saldos.saldo_valores		+= tot_cheques
				    	
					//// grabar todo
						estado=databaseManager.saveData()
						if (estado==true)
						{
							databaseManager.refreshRecordFromDatabase(foundset, 0); 
				            databaseManager.refreshRecordFromDatabase(fs_saldos,0); 
							var resp=globals.DIALOGS.showQuestionDialog('', 'Ingresos Varios ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_comprobante,'00000000') +  ' Generado correctamente' + ' Imprime:' ,  "Si", "No" )
							if (resp == 'Si')
							{
								es_preview = 1;
								//forms.rec_cabecera_imp.controller.print(true,true)
								forms.ing_varios_imp.controller.showPrintPreview(true); 	
							}
							else
							{
								Iniciar() // no hacer Iniciar cuando se va al preview
							}
						}
						else
						{
							globals.DIALOGS.showWarningDialog('Ingresos varios','Ingresos Varios No fue generado '  ,  "OK")
							cancelar()
						}
					} // fin found==1 cuando encuentra saldos_caja
					else
					{
						globals.DIALOGS.showWarningDialog('Aviso',"No existe saldo de cuenta " + globals.zparam_caja_default ,'OK')
					}
				}
				else //19/05/2010 fallo el find de saldos_caja
			    {
			    	globals.DIALOGS.showWarningDialog('Aviso','No encontró tabla de saldos','OK')
				}
			}// else, cuando encuentra la numeracion para ingresos varios
		 }
	 }
	 return true
}

/**
 *
 * @properties={typeid:24,uuid:"208E523F-E2BF-44F7-BB35-8356B67D63BC"}
 */
function eliminar_renglon() 
{
	var found = rec_cabecera_to_rec_detalle.getSize()
	if (found==0)
	{
	    globals.gtotal_valores=0
	}
	else
	{
		var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
		if (resp == 'Si')
		{
			rec_cabecera_to_rec_detalle.deleteRecord()
			totales_valores()
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"36247434-4883-4825-98FB-FD97634017A0"}
 */
function salir_rec() 
{
	if (es_preview== 0)
	{
	 	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
		if (resp == 'Si')
		{
			databaseManager.revertEditedRecords()
			databaseManager.setAutoSave(false)  // 11/07/2010
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"8686ED37-1208-45B6-99D6-D3ED72FE7E8F"}
 */
function totalizar() 
{
	totales_valores();
	totales_varios();
}

/**
 *
 * @properties={typeid:24,uuid:"241140DD-C8B5-4356-BEE6-25820F59539E"}
 */
function Iniciar() 
{
	databaseManager.setAutoSave(false)
	controller.newRecord(false);
	
	fecha 					= application.getServerTimeStamp();  
	letra					= "X";  
	
	globals.gtotal_varios 	= 0;
	globals.gtotal_valores	= 0;
	globals.gtotal_saldo	= 0;
	
	es_preview = 0;
	fCuenta_id = globals.zparam_caja_default
	
	elements.tabs_420.enabled = true;
}

/**
 *
 * @properties={typeid:24,uuid:"FF73550C-02FD-4AD6-BA45-45AABA72D247"}
 */
function totales_valores() 
{
	globals.gtotal_valores = 0
	for ( var i = 1 ; i <= rec_cabecera_to_rec_detalle.getSize(); i++ )
	{
		rec_cabecera_to_rec_detalle.setSelectedIndex(i)
		globals.gtotal_valores += rec_cabecera_to_rec_detalle.importe
	} 
}

/**
 *
 * @properties={typeid:24,uuid:"7EAA2A5D-7D58-4F76-821D-189470D8B020"}
 */
function agregar_renglon_varios() 
{// dar alta de un renglon en rec_detalle_varios 
	rec_cabecera_to_rec_detalle_varios.newRecord(false);
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"4F6CE2DB-5C4D-415E-9996-B78598311E57"}
 */
function eliminar_renglon_varios(event) 
{
	var found = rec_cabecera_to_rec_detalle_varios.getSize()
	if (found==0)
	{
	   	globals.gtotal_varios=0.00  // ????
	}
	else
	{
		var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea dar de baja? ',  'Si', 'No')
		if (resp == 'Si')
		{
			rec_cabecera_to_rec_detalle_varios.deleteRecord()
			totales_varios()  // recalcula los totales ?  probar
		}
	}
}

/**
 *
 * @properties={typeid:24,uuid:"E0B62C41-DFAD-491C-9A5B-DE87000505D0"}
 */
function totales_varios() 
{
	globals.gtotal_varios = 0;
	for ( var i = 1 ; i <= rec_cabecera_to_rec_detalle_varios.getSize(); i++ )
	{
		rec_cabecera_to_rec_detalle_varios.setSelectedIndex(i);
		globals.gtotal_varios += rec_cabecera_to_rec_detalle_varios.importe
	}
}

/**
 * @properties={typeid:24,uuid:"6C71633E-0632-4BBA-9239-EE092A4536DF"}
 */
function validar_al_confirmar() 
{
//var found=rec_cabecera_to_rec_detalle.getSize()  // quitar luego de probar
	for (var i = 1 ; i <= rec_cabecera_to_rec_detalle.getSize(); i++)
	{
		rec_cabecera_to_rec_detalle.setSelectedIndex(i);
		if (rec_cabecera_to_rec_detalle.importe==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Importe ",'OK')
	    	return false;
	    }
		if (rec_cabecera_to_rec_detalle.valor_id==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar el Valor ",'OK')
	    	return false;
	    }
		if (rec_cabecera_to_rec_detalle.cuentas_cyb==null)
	    {
	    	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Cuenta ",'OK')
	    	return false;
	    }
		if(rec_cabecera_to_rec_detalle.rec_detalle_to_valores.es_cheque==1)
		{
				if (rec_cabecera_to_rec_detalle.cheque_nro==null)
	   			 {
	  		  	globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Nro. cheque",'OK')
	    			return false;
		   	 	}
				if (rec_cabecera_to_rec_detalle.fecha_pago==null)
	   			 {
	  	  			globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Fecha de pago de cheque nro. " + rec_cabecera_to_rec_detalle.cheque_nro,'OK')
	   	 			return false;
	   			 }
		}
		else
		{
			if(rec_cabecera_to_rec_detalle.rec_detalle_to_valores.usa_cta_bco==1) //  es transferencia
			{
				if (rec_cabecera_to_rec_detalle.cheque_nro==null)
	    		{
	    			globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Nro. Transferencia",'OK')
	  	 		 	return false;
	  			}
				if (rec_cabecera_to_rec_detalle.fecha_pago==null)
	    		{
	    			globals.DIALOGS.showWarningDialog('Aviso',"Debe ingresar Fecha de la Transferencia nro. " + rec_cabecera_to_rec_detalle.cheque_nro,'OK')
	   		 		return false;
	   			}
			}
		}
	} // fin for de detalles
	for (i = 1 ; i <= rec_cabecera_to_rec_detalle_varios.getSize(); i++)  // 08/10/2010
	{//// recorrer imputacion contable
		rec_cabecera_to_rec_detalle_varios.setSelectedIndex(i)
		if (rec_cabecera_to_rec_detalle_varios.importe==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar importe','OK')
			return false;
		}
		if (rec_cabecera_to_rec_detalle_varios.concepto_varios==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar concepto','OK')
			return false;
		}
		if (rec_cabecera_to_rec_detalle_varios.plan_id==null) 
		{
			globals.DIALOGS.showWarningDialog('Aviso','Debe ingresar cuenta de imputación contable','OK')
			return false;
		}
	}
	
	return true; 
}
